Field of the Invention
This invention relates to multi-threaded processors and, more specifically, to dynamic sharing of processor resources between multiple processor threads.
Description of the Related Art
Modern computer processors typically include cores that simultaneously execute multiple threads. Each thread may include a set of instructions that execute independently of instructions from another thread. For example, an individual software process, such as an application, may consist of one or more threads that may be scheduled for execution by an operating system. Multi-threaded cores may lead to more efficient use of processor resources and improved processor performance, as resources are less likely to sit idle with multiple threads operating in different stages of execution.
Processor performance in a multi-threaded system can be further improved with dynamic sharing of processor resources between the multiple threads. Resources that are dynamically shared, as opposed to statically shared, are provided to system threads on an as needed basis and released by system threads as soon as the resources are no longer needed. Examples of resources that may be shared dynamically between threads include branch buffers, load and store buffers, pick queue entries, translation buffer miss entries and retirement buffers.